/*********************************************************************************************************************
 * COPYRIGHT NOTICE
 * Copyright (c) 2018,逐飞科技
 * All rights reserved.
 * 技术讨论QQ群：一群：179029047(已满)  二群：244861897
 *
 * 以下所有内容版权均属逐飞科技所有，未经允许不得用于商业用途，
 * 欢迎各位使用并传播本程序，修改内容时必须保留逐飞科技的版权声明。
 *
 * @file       		IMU660RA
 * @company	   		成都逐飞科技有限公司
 * @author     		逐飞科技(QQ3184284598)
 * @version    		查看doc内version文件 版本说明
 * @Software 	  	MDK FOR C251 V6.19
 * @Target        core		MSPM0G3507
 * @Taobao   	  	https://seekfree.taobao.com/
 * @date       		2024-08-20
 * @note		
					接线定义：
					===================================================== SPI 驱动====================================================
	        (PB9)			//  SPI SCK 引脚
					(PB8)     //  SPI MOSI 引脚
					(PB7)			//  SPI MISO 引脚
					(PB6)			//  SPI CS 引脚
					具体配置在ti_msp_dl_config_h中声明，在system_init();中调用
					使用imu660ra陀螺仪，就先在主函数调用system_init();，然后调用imu660ra();
          ===================================================== SPI 驱动====================================================
          具体移植参考https://blog.csdn.net/2401_86231275/article/details/140567468
 ********************************************************************************************************************/

#ifndef IMU660RA_H
#define IMU660RA_H
#include "headfile.h"

#define IMU660RA_TIMEOUT_COUNT      (0x00FF)                                    // IMU660RA 超时计数
//================================================定义 IMU660RA 内部地址================================================
#define IMU660RA_DEV_ADDR           (0x69)                                     
#define IMU660RA_SPI_W              (0x00)
#define IMU660RA_SPI_R              (0x80)

#define IMU660RA_CHIP_ID            (0x00)
#define IMU660RA_PWR_CONF           (0x7C)
#define IMU660RA_PWR_CTRL           (0x7D)
#define IMU660RA_INIT_CTRL          (0x59)
#define IMU660RA_INIT_DATA          (0x5E)
#define IMU660RA_INT_STA            (0x21)
#define IMU660RA_ACC_ADDRESS        (0x0C)
#define IMU660RA_GYRO_ADDRESS       (0x12)
#define IMU660RA_ACC_CONF           (0x40)
#define IMU660RA_ACC_RANGE          (0x41)
#define IMU660RA_GYR_CONF           (0x42)
#define IMU660RA_GYR_RANGE          (0x43)

#define IMU660RA_ACC_SAMPLE         (0x02)                                      // 加速度计量程

#define IMU660RA_GYR_SAMPLE         (0x00)                                      // 陀螺仪量程


extern int16_t imu660ra_gyro_x, imu660ra_gyro_y, imu660ra_gyro_z;                 // 三轴陀螺仪数据      gyro (陀螺仪)
extern int16_t imu660ra_acc_x, imu660ra_acc_y, imu660ra_acc_z;                    // 三轴加速度计数据     acc (accelerometer 加速度计)
extern const unsigned char imu660ra_config_file[8192];

void  imu660ra_get_acc              (void);                                     // 获取 IMU660RA 加速度计数据
void  imu660ra_get_gyro             (void);                                     // 获取 IMU660RA 陀螺仪数据
uint8_t imu660ra_init                 (void);                                     // 初始化 IMU660RA

extern float imu660ra_transition_factor[2];         
#define imu660ra_acc_transition(acc_value)      ((float)(acc_value) / imu660ra_transition_factor[0])
#define imu660ra_gyro_transition(gyro_value)    ((float)(gyro_value) / imu660ra_transition_factor[1])
#endif

